$(function(){

	var jtp_id = 0;
	
// Напоминание о выборе строки
	function selRowPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите строку в таблице.", 'app-icon-stop32');
	}
	function selOnePlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите только одну строку в таблице.", 'app-icon-stop32');
	}
	function selJobPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите вид работы.", 'app-icon-stop32');
	}
	

// *************************************************************************************	
//
// Справочник по видам баланса
//
    function GetBalDictionary(area_id, caller) {
		var area = $('#'+area_id);
		var vdiv = area_id+'Tab';
		var area_parent = area.parent();

		area.html('<div id="'+vdiv+'Pager"></div><table id="'+vdiv+'"></table>');

		var pager_id = '#' + vdiv + 'Pager';
        var pager = $(pager_id);
		
		var edit_div = 'div#editmod' + vdiv;

        var gritab;
        var col_order = [0, 1, 2, 3];
        var col_names = ['ID', '№ п/п', 'Шифр', 'Назначение' ];
        var col_model = [
		    { name: 'id', index: 'btp_id', hidden: true, width: 1, editable: false, fixed: true },
		    { name: 'btp_ord', index: 'btp_ord', hidden: false, width: 50, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Порядковый номер</div>'}
			},
		    { name: 'btp_code', index: 'btp_code', hidden: false, width: 100, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Шифр баланса</div>'}
			},					
		    { name: 'btp_descr', index: 'btp_descr', hidden: false, width: 300, editable: true, edittype: 'textarea',
                    editoptions: { maxlength: "128", style: "width:252px; height:50px; resize:none;" }, 
					formoptions: { label: '<div class="jqg-form-label">Назначение</div>'} 
			}					
        ];
        var jqgo = {
            url: 'index.php',
            editurl: 'index.php',
            datatype: 'json',
            postData: { q: 'payments/listbtp' },
            emptyrecords: true,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 25,
            multiboxonly: true,
            mtype: 'POST',
            forceFit: true,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 15,
            rowList: [10, 40, 100],
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: area_parent.innerHeight() - 87,
            width: area_parent.innerWidth() - 6,
            sortname: 'btp_ord',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function (xhr, status, error) {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                switch( data.userdata.errcode ) {
                    case 0:
						break;
                    default:
                        app.alert('AlertDlg', 'Ошибка', data.userdata.errmess, 'app-icon-stop32', caller.Close );
                        break;
                }                
            },
			beforeRequest: function() {
				$('#' + vdiv).jqGrid('setGridParam',{postData:{'jtp_id':jtp_id} });
			},
            ondblClickRow: onEditClick
        };

// Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

// Индикация серверных ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
            }
				
            return [success, msg];
        }

		function onEditClick() {
			var rowarr = gritab.getGridParam('selarrrow');
			if( rowarr.length == 0 ) { selRowPlease(); return; }
			if( rowarr.length > 1 ) { selOnePlease(); return; }
			if( jtp_id == 0 ) { selJobPlease(); return; }
			gritab.jqGrid('editGridRow', rowarr[0], {
				width: 400,
				resize: false,
                modal: true,
                jqModal: true,
                zIndex: app.jqgrid_form_min_z_index+1,
                editData: { q: 'payments/updbtp', jtp_id: function() { return jtp_id; }  },
                afterSubmit: responseOnSubmit,
                viewPagerButtons: false,
                closeAfterEdit: true,
			});
		}
		
// Навигатор - создаем панель инструментов
        gritab.jqGrid('navGrid', pager_id, {
				add:false,del:false,edit:false,view:false,search:false,refresh:false });
        
// Пользовательский навигатор - создать
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Добавить',
            title: 'Создать запись',
            buttonicon: 'ui-icon-plus',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				gritab.jqGrid('editGridRow', 'new', {
					width: 400,
					resize: false,
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    editData: { q: 'payments/insbtp', jtp_id: function() { return jtp_id; } },
                    afterSubmit: responseOnSubmit,
                    closeAfterAdd: false
				});
			}
        });

// Пользовательский навигатор - редактирование
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Изменить',
            title: 'Редактировать выбранную запись',
            buttonicon: 'ui-icon-pencil',
            onClickButton: onEditClick
        });
// Пользовательский навигатор - удаление
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Удалить',
            title: 'Удаление выбранной записи',
            buttonicon: 'ui-icon-trash',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				var rowlist = gritab.getGridParam('selarrrow').toString();
				if( !rowlist ) { selRowPlease(); return; }
				gritab.jqGrid('delGridRow', rowlist, {
                    modal: true,
                    jqModal: true,
                    width: 250,
					msg: '<table style="width:240px;margin-top:16px;"><tr><td style="width:50px;">'+
							'<div class="app-icon-quest32"></div></td><td>Удалить выбранную запись(и) ?</td></tr></table>',
					resize: false,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    closeOnEscape: true,
                    delData: { q: 'payments/delbtp', jtp_id: function() { return jtp_id; }  },
                    afterSubmit: responseOnSubmit
				});
			}
        });
// Пользовательский навигатор - обновить
		gritab.jqGrid('navButtonAdd',pager_id,{
			caption: 'Обновить',
			title: 'Обновить таблицу',
			buttonicon: 'ui-icon-refresh',
			onClickButton: function() { 	gritab.trigger("reloadGrid"); }
		});    

// Делаем ширину панели кнопок максимальной
		$('td#'+area_id+'TabPager_center').width(2);
		
//        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });

		this.Destroy = function() {
			gritab.GridDestroy(vdiv);
			area.find('*').remove();
		};
		this.Resize = function() {
			gritab.setGridWidth( area_parent.innerWidth() - 6 );
			gritab.setGridHeight( area_parent.innerHeight() - 87 );
		}
		this.Refresh = function() {
			gritab.trigger("reloadGrid");
		}

    };  // End of GetBalDictionary function definition

	
// *************************************************************************************	
//
// Справочник по видам входящих платежей
//
    function GetIncDictionary(area_id, caller) {
		var area = $('#'+area_id);
		var vdiv = area_id+'Tab';
		var area_parent = area.parent();

		area.html('<div id="'+vdiv+'Pager"></div><table id="'+vdiv+'"></table>');

		var pager_id = '#' + vdiv + 'Pager';
        var pager = $(pager_id);
		
		var edit_div = 'div#editmod' + vdiv;

        var el_btp_id;
        var el_btp_code;
        var btp_code = '';
		
        var gritab;
        var col_order = [0, 1, 2, 3, 4, 5];
        var col_names = ['ID', '№ п/п', 'Шифр', 'Назначение', 'ID баланса', 'Баланс' ];
        var col_model = [
		    { name: 'id', index: 'itp_id', hidden: true, width: 1, editable: false, fixed: true },
		    { name: 'itp_ord', index: 'itp_ord', hidden: false, width: 50, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Порядковый номер</div>'}
			},					
		    { name: 'itp_code', index: 'itp_code', hidden: false, width: 80, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Шифр прихода</div>'}
			},					
		    { name: 'itp_descr', index: 'itp_descr', hidden: false, width: 250, editable: true, edittype: 'textarea',
                    editoptions: { maxlength: "128", style: "width:252px; height:50px; resize:none;" }, 
					formoptions: { label: '<div class="jqg-form-label">Назначение</div>'} 
			},
		    { name: 'btp_id', index: 'btp_id', hidden: true, width: 1, editable: true, 
                    editoptions: { dataInit: function (el) { el_btp_id = el; } } 
			}, 					
		    { name: 'btp_code', index: 'btp_code', hidden: false, width: 80, editable: true, 
                    editoptions: { maxlength: "8", style: "width:250px;", dataInit: function (el) { el_btp_code = el; }}, 
					formoptions: { label: '<div class="jqg-form-label">Шифр баланса</div>'}
			}								
        ];
        var jqgo = {
            url: 'index.php',
            editurl: 'index.php',
            datatype: 'json',
            postData: { q: 'payments/listitp' },
            emptyrecords: true,
            autowidth: false,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 25,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: true,
			scrollOffset: 20,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 15,
            rowList: [10, 40, 100],
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: area_parent.innerHeight() - 87,
            width: area_parent.innerWidth() - 6,
            sortname: 'itp_ord',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function (xhr, status, error) {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                switch( data.userdata.errcode ) {
                    case 0:
						break;
                    default:
                        app.alert('AlertDlg', 'Ошибка', data.userdata.errmess, 'app-icon-stop32', caller.Close );
                        break;
                }                
            },
			beforeRequest: function() {
				$('#' + vdiv).jqGrid('setGridParam',{postData:{'jtp_id':jtp_id} });
			},
            ondblClickRow: onEditClick
        };

// Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

// Индикация серверных ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
            }
				
            return [success, msg];
        }

		function onEditClick() {
			var rowarr = gritab.getGridParam('selarrrow');
			if( rowarr.length == 0 ) { selRowPlease(); return; }
			if( rowarr.length > 1 ) { selOnePlease(); return; }
			if( jtp_id == 0 ) { selJobPlease(); return; }
			gritab.jqGrid('editGridRow', rowarr[0], {
				width: 400,
				resize: false,
                modal: true,
                jqModal: true,
                zIndex: app.jqgrid_form_min_z_index+1,
                editData: { q: 'payments/upditp', jtp_id: function() { return jtp_id; }  },
				onInitializeForm: function( fm ) {
					$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                afterShowForm: onShowEditForm,
                afterSubmit: responseOnSubmit,
                viewPagerButtons: false,
                closeAfterEdit: true,
				onClose: onCloseEditForm
			});
		}
		
		function onShowEditForm(fm) {
			SetBalHack();
            $(edit_div).css({'overflow':'visible'}).shadow();
		}
		        
		function onCloseEditForm() {
			$(el_btp_code).autocomplete( "destroy" ).unbind();
			return true;
		}
		
// Навигатор - создаем панель инструментов
        gritab.jqGrid('navGrid', pager_id, {
				add:false,del:false,edit:false,view:false,search:false,refresh:false });
        
// Пользовательский навигатор - создать
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Добавить',
            title: 'Создать запись',
            buttonicon: 'ui-icon-plus',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				gritab.jqGrid('editGridRow', 'new', {
					width: 400,
					resize: false,
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    editData: { q: 'payments/insitp', jtp_id: function() { return jtp_id; } },
					onInitializeForm: function( fm ) {
						$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                    afterShowForm: onShowEditForm,
                    afterSubmit: responseOnSubmit,
					onClose: onCloseEditForm,
                    closeAfterAdd: false
				});
			}
        });

// Пользовательский навигатор - редактирование
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Изменить',
            title: 'Редактировать выбранную запись',
            buttonicon: 'ui-icon-pencil',
            onClickButton: onEditClick
        });
// Пользовательский навигатор - удаление
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Удалить',
            title: 'Удаление выбранной записи',
            buttonicon: 'ui-icon-trash',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				var rowlist = gritab.getGridParam('selarrrow').toString();
				if( !rowlist ) { selRowPlease(); return; }
				gritab.jqGrid('delGridRow', rowlist, {
                    modal: true,
                    jqModal: true,
                    width: 250,
					msg: '<table style="width:240px;margin-top:16px;"><tr><td style="width:50px;">'+
							'<div class="app-icon-quest32"></div></td><td>Удалить выбранную запись(и) ?</td></tr></table>',
					resize: false,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    closeOnEscape: true,
                    delData: { q: 'payments/delitp', jtp_id: function() { return jtp_id; }  },
                    afterSubmit: responseOnSubmit
				});
			}
        });
// Пользовательский навигатор - обновить
		gritab.jqGrid('navButtonAdd',pager_id,{
			caption: 'Обновить',
			title: 'Обновить таблицу',
			buttonicon: 'ui-icon-refresh',
			onClickButton: function() { 	gritab.trigger("reloadGrid"); }
		});    

// Делаем ширину панели кнопок максимальной
		$('td#'+area_id+'TabPager_center').width(2);
		
// запрос кода баланса
        function SetBalHack() {
            $(el_btp_code).autocomplete({
				html: true,
				appendTo: edit_div,
                source: function (request, responce) {
                    $.post('index.php', { q: 'payments/findbtp', jtp_id: jtp_id, term: request.term },
                    function (rsp, textStatus) {
                        if (rsp.errcode) {
                            if (rsp.errcode == '999') { alert(rsp.errmess); }
                            else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
                            responce();
                            return;
                        }
                        if (rsp.data) {
                            responce($.map(rsp.data, function (item) {
                                return { label: item.btp_code + ' ( '+item.btp_descr+' )', 
										 btp_id: item.btp_id, 
										 btp_code: item.btp_code  
										}
                            }));
                            return;
                        }
                        responce();
                    }, 
                    'json');
                },
                minLength: 2, autoFocus: true,
                focus: function (event, ui) { return false; },
                select: function (event, ui) {
                    $(el_btp_id).val(ui.item.btp_id);
                    $(el_btp_code).val(ui.item.btp_code.replace(/<(b|\/b)>/g,''));
                    btp_code = $(el_btp_code).val();
                    return false;
                }
            });
			
            btp_code = $(el_btp_code).val();
            $(el_btp_code).bind( 'focusout', function () { 
                if( $(el_btp_code).val() != btp_code ) { 
                    btp_code = '';
                    $(el_btp_id).val('');
                    $(el_btp_code).val('');
                }
            });            
        }

		this.Destroy = function() {
			gritab.GridDestroy(vdiv);
			area.find('*').remove();
		};
		this.Resize = function() {
			gritab.setGridWidth( area_parent.innerWidth() - 6 );
			gritab.setGridHeight( area_parent.innerHeight() - 87 );
		}
		this.Refresh = function() {
			gritab.trigger("reloadGrid");
		}

    };  // End of GetIncDictionary function definition


// *************************************************************************************	
//
// Справочник по видам исходящих платежей
//
    function GetOutDictionary(area_id, caller) {
		var area = $('#'+area_id);
		var vdiv = area_id+'Tab';
		var area_parent = area.parent();

		area.html('<div id="'+vdiv+'Pager"></div><table id="'+vdiv+'"></table>');

		var pager_id = '#' + vdiv + 'Pager';
        var pager = $(pager_id);
		
		var edit_div = 'div#editmod' + vdiv;

        var el_btp_id;
        var el_btp_code;
        var btp_code = '';
		
        var gritab;
        var col_order = [0, 1, 2, 3, 4];
        var col_names = ['ID', '№ п/п', 'Шифр', 'Назначение', 'ID баланса', 'Баланс' ];
        var col_model = [
		    { name: 'id', index: 'otp_id', hidden: true, width: 1, editable: false, fixed: true },
		    { name: 'otp_ord', index: 'otp_ord', hidden: false, width: 50, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Порядковый номер</div>'}
			},					
		    { name: 'otp_code', index: 'otp_code', hidden: false, width: 80, editable: true, 
                    editoptions: { maxlength: "16", style: "width:250px;" }, 
					formoptions: { label: '<div class="jqg-form-label">Шифр расхода</div>'}
			},					
		    { name: 'otp_descr', index: 'otp_descr', hidden: false, width: 250, editable: true, edittype: 'textarea',
                    editoptions: { maxlength: "128", style: "width:252px; height:50px; resize:none;" }, 
					formoptions: { label: '<div class="jqg-form-label">Назначение</div>'} 
			},
		    { name: 'btp_id', index: 'btp_id', hidden: true, width: 1, editable: true, 
                    editoptions: { dataInit: function (el) { el_btp_id = el; } } 
			}, 					
		    { name: 'btp_code', index: 'btp_code', hidden: false, width: 80, editable: true, 
                    editoptions: { maxlength: "8", style: "width:250px;", dataInit: function (el) { el_btp_code = el; }}, 
					formoptions: { label: '<div class="jqg-form-label">Шифр баланса</div>'}
			}								
        ];
        var jqgo = {
            url: 'index.php',
            editurl: 'index.php',
            datatype: 'json',
            postData: { q: 'payments/listotp' },
            emptyrecords: true,
            autowidth: false,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 25,
            multiboxonly: true,
            mtype: 'POST',
            shrinkToFit: true,
			scrollOffset: 20,
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 15,
            rowList: [10, 40, 100],
            loadui: 'disable',
            toolbar: [false, 'top'],
            filterbar: false,
            height: area_parent.innerHeight() - 87,
            width: area_parent.innerWidth() - 6,
            sortname: 'otp_ord',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            loadError: function (xhr, status, error) {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                switch( data.userdata.errcode ) {
                    case 0:
						break;
                    default:
                        app.alert('AlertDlg', 'Ошибка', data.userdata.errmess, 'app-icon-stop32', caller.Close );
                        break;
                }                
            },
			beforeRequest: function() {
				$('#' + vdiv).jqGrid('setGridParam',{postData:{'jtp_id':jtp_id} });
			},
            ondblClickRow: onEditClick
        };

// Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

// Индикация серверных ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
            }
				
            return [success, msg];
        }

		function onEditClick() {
			var rowarr = gritab.getGridParam('selarrrow');
			if( rowarr.length == 0 ) { selRowPlease(); return; }
			if( rowarr.length > 1 ) { selOnePlease(); return; }
			if( jtp_id == 0 ) { selJobPlease(); return; }
			gritab.jqGrid('editGridRow', rowarr[0], {
				width: 400,
				resize: false,
                modal: true,
                jqModal: true,
                zIndex: app.jqgrid_form_min_z_index+1,
                editData: { q: 'payments/updotp', jtp_id: function() { return jtp_id; }  },
				onInitializeForm: function( fm ) {
					$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                afterShowForm: onShowEditForm,
                afterSubmit: responseOnSubmit,
                viewPagerButtons: false,
                closeAfterEdit: true,
				onClose: onCloseEditForm
			});
		}
		
		function onShowEditForm(fm) {
			SetBalHack();
            $(edit_div).css({'overflow':'visible'}).shadow();
		}
		        
		function onCloseEditForm() {
			$(el_btp_code).autocomplete( "destroy" ).unbind();
			return true;
		}
		
// Навигатор - создаем панель инструментов
        gritab.jqGrid('navGrid', pager_id, {
				add:false,del:false,edit:false,view:false,search:false,refresh:false });
        
// Пользовательский навигатор - создать
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Добавить',
            title: 'Создать запись',
            buttonicon: 'ui-icon-plus',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				gritab.jqGrid('editGridRow', 'new', {
					width: 400,
					resize: false,
                    modal: true,
                    jqModal: true,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    editData: { q: 'payments/insotp', jtp_id: function() { return jtp_id; } },
					onInitializeForm: function( fm ) {
						$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                    afterShowForm: onShowEditForm,
                    afterSubmit: responseOnSubmit,
					onClose: onCloseEditForm,
                    closeAfterAdd: false
				});
			}
        });

// Пользовательский навигатор - редактирование
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Изменить',
            title: 'Редактировать выбранную запись',
            buttonicon: 'ui-icon-pencil',
            onClickButton: onEditClick
        });
// Пользовательский навигатор - удаление
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Удалить',
            title: 'Удаление выбранной записи',
            buttonicon: 'ui-icon-trash',
            onClickButton: function() { 
				if( jtp_id == 0 ) { selJobPlease(); return; }
				var rowlist = gritab.getGridParam('selarrrow').toString();
				if( !rowlist ) { selRowPlease(); return; }
				gritab.jqGrid('delGridRow', rowlist, {
                    modal: true,
                    jqModal: true,
                    width: 250,
					msg: '<table style="width:240px;margin-top:16px;"><tr><td style="width:50px;">'+
							'<div class="app-icon-quest32"></div></td><td>Удалить выбранную запись(и) ?</td></tr></table>',
					resize: false,
                    zIndex: app.jqgrid_form_min_z_index+1,
                    closeOnEscape: true,
                    delData: { q: 'payments/delotp', jtp_id: function() { return jtp_id; }  },
                    afterSubmit: responseOnSubmit
				});
			}
        });
// Пользовательский навигатор - обновить
		gritab.jqGrid('navButtonAdd',pager_id,{
			caption: 'Обновить',
			title: 'Обновить таблицу',
			buttonicon: 'ui-icon-refresh',
			onClickButton: function() { 	gritab.trigger("reloadGrid"); }
		});    

// Делаем ширину панели кнопок максимальной
		$('td#'+area_id+'TabPager_center').width(2);
		
// запрос кода баланса
        function SetBalHack() {
            $(el_btp_code).autocomplete({
				html: true,
				appendTo: edit_div,
                source: function (request, responce) {
                    $.post('index.php', { q: 'payments/findbtp', jtp_id: jtp_id, term: request.term },
                    function (rsp, textStatus) {
                        if (rsp.errcode) {
                            if (rsp.errcode == '999') { alert(rsp.errmess); }
                            else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
                            responce();
                            return;
                        }
                        if (rsp.data) {
                            responce($.map(rsp.data, function (item) {
                                return { label: item.btp_code + ' ( '+item.btp_descr+' )', 
										 btp_id: item.btp_id, 
										 btp_code: item.btp_code  
										}
                            }));
                            return;
                        }
                        responce();
                    }, 
                    'json');
                },
                minLength: 2, autoFocus: true,
                focus: function (event, ui) { return false; },
                select: function (event, ui) {
                    $(el_btp_id).val(ui.item.btp_id);
                    $(el_btp_code).val(ui.item.btp_code.replace(/<(b|\/b)>/g,''));
                    btp_code = $(el_btp_code).val();
                    return false;
                }
            });
			
            btp_code = $(el_btp_code).val();
            $(el_btp_code).bind( 'focusout', function () { 
                if( $(el_btp_code).val() != btp_code ) { 
                    btp_code = '';
                    $(el_btp_id).val('');
                    $(el_btp_code).val('');
                }
            });            
        }

		this.Destroy = function() {
			gritab.GridDestroy(vdiv);
			area.find('*').remove();
		};
		this.Resize = function() {
			gritab.setGridWidth( area_parent.innerWidth() - 6 );
			gritab.setGridHeight( area_parent.innerHeight() - 87 );
		}
		this.Refresh = function() {
			gritab.trigger("reloadGrid");
		}

    };  // End of GetOutDictionary function definition

	
// ***************
// 
// Работы
//
    app.ShowJobDictionary = function (dlgID) {
        var btpTab, itpTab, otpTab;
        var aldlg = $('#' + dlgID);

        if ($('#' + dlgID + 'Tab').length) return;
		
		var me = this;
		aldlg.dialog(
		{
			modal: false, title: 'Справочник работ и платежей',
			height: 500, width: 750, minHeight:326, minWidth:700,
			closeOnEscape: true,
			autoOpen: false,
			resizable: true,
			resize: function( e, ui ) { 
				btpTab.Resize(); 
				itpTab.Resize(); 
				otpTab.Resize(); 
			},
			open: function () { 
				aldlg.load('index.php', {q:'payments'}, createDialogContent );
				$('div[aria-describedby="' + dlgID + '"]').shadow(); 
			},
			close: function () {
				aldlg.empty();
				if (btpTab) btpTab.Destroy();
				if (itpTab) itpTab.Destroy();
				if (otpTab) otpTab.Destroy();
				aldlg.dialog("destroy");
			}
		});

		this.Close = function() { aldlg.dialog('close'); };
		aldlg.dialog('open');
		
		function createDialogContent() {
			var dtree = aldlg.find("#job_type_list");
			var oDtree, rootNode;
			var ins = aldlg.find("#job_type_insert");
			var upd = aldlg.find("#job_type_update");
			var del = aldlg.find("#job_type_delete");
			var clr = aldlg.find("#job_type_clear");
			var code = aldlg.find("#job_type_code");
			var cat_id = aldlg.find("#job_cat_id");
			var desc = aldlg.find("#job_type_descrip");
			
			$.ui.dynatree.nodedatadefaults["icon"] = false;
			jtp_id = 0;
			
// Получить список работ
			dtree.dynatree({
				clickFolderMode: 1,
				initAjax: {
					url: "index.php",
					data: { q: "payments/listjtp" }
				},
				onCreate: function(node, nodeSpan) {
					if( typeof node.data.errcode != 'undefined' ) {
                        app.alert('AlertDlg', 'Ошибка', node.data.errmess, 'app-icon-stop32', me.Close );					
					}
				},
				onClick: function(node, event) {
					// Hack for leaf expanding too 
					if( node.hasChildren() && node.getEventTargetType(event) == "title"){ node.toggleExpand(); }
					return true;
				},			
				onActivate: function(node) {
					jtp_id = node.data.key;
					cat_id.val(node.data.cat_id);
					code.val(node.data.title);
					desc.val(node.data.tooltip);
					
					btpTab.Refresh();
					itpTab.Refresh();
					otpTab.Refresh();
				}
			});
			
			oDtree = dtree.dynatree("getTree");
			rootNode = dtree.dynatree("getRoot");
			
// Добавить новый тип работы
			ins.button({icons:{primary: "ui-icon-plus"}});
			ins.click(function() { 
				if( cat_id.val() == '0' || code.val() == '' || desc.val() == '' ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Пожалуйста. Заполните все поля ввода.', 'app-icon-stop32');
					return false;
				}
                $.post('index.php', { 
						q: 'payments/insjtp',
						jtp_cat_id: cat_id.val(),
						jtp_code: code.val(), 
						jtp_descr: desc.val() 
					},
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
                        if (typeof rsp.data.key != 'undefined') {
							rootNode.addChild({
								key: rsp.data.key,
								title: rsp.data.title,
								cat_id: rsp.data.cat_id,
								tooltip: rsp.data.tooltip,
								isFolder: false
							});
							rootNode.sortChildren();
							oDtree.activateKey(rsp.data.key);
                        }
						
                    }, 'json'
				);
			});
		
// Изменить работу
			upd.button({icons:{primary: "ui-icon-pencil"}});
			upd.click(function() { 
				var node = dtree.dynatree("getActiveNode");
				if( cat_id.val() == '0' || code.val() == '' || desc.val() == '' ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Пожалуйста. Заполните все поля ввода.', 'app-icon-stop32');
					return false;
				}
				if( !node || !node.data.key || node.data.key != jtp_id ) {
					selJobPlease();
					return;
				}
				if( node.data.title != code.val() ) {
					app.confirm('AlertDlg', 'Опс-с-с !!!', 'Внимание !!!. Вы изменили шифр типа работы. Требуется подтверждение для внесения изменений.', 
						'app-icon-quest32', updJob, node );
 					return;
				}
				else updJob(node);
			});
		
			function updJob( node ) {
               $.post('index.php', { 
						q:'payments/updjtp', 
						jtp_id: jtp_id, 
						jtp_cat_id: cat_id.val(), 
						jtp_code: code.val(),
						jtp_descr: desc.val() 
					},
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
                        if (typeof rsp.data.key != 'undefined' && node.data.key == rsp.data.key ) {
							node.data.title = rsp.data.title;
							node.data.cat_id = rsp.data.cat_id;
							node.data.tooltip = rsp.data.tooltip;
							node.render();
						}
						rootNode.sortChildren();
						oDtree.reactivate();
                    }, 'json'
				);
			}
			
// Удалить тип работы
			del.button({icons:{primary: "ui-icon-trash"}});
			del.click( function() { 
				var node = dtree.dynatree("getActiveNode");
				if( !node || !node.data.key || node.data.key != jtp_id ) {
					selJobPlease();
					return;
				}
				app.confirm('AlertDlg', 'Требуется подтверждение', 'Удалить выделенное виды работ из списка ?', 
						'app-icon-quest32', delJob, node );
			});
			
			function delJob(node) { 
                $.post('index.php', { q: 'payments/deljtp', jtp_id: jtp_id },
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
						code.val('');
						desc.val('');
						jtp_id = 0;
						node.remove();
						btpTab.Refresh();
						itpTab.Refresh();
						otpTab.Refresh();
                    }, 'json'
				);
			}
			
// Очистить
			clr.button();
			clr.click( function() { 
				var node = dtree.dynatree("getActiveNode");
				cat_id.val(0);
				code.val('');
				desc.val('');
				jtp_id = 0;
				if( node ) node.deactivate();
				btpTab.Refresh();				
				itpTab.Refresh();
				otpTab.Refresh();
			});
			
			$('#job_type_tabs').tabs();
			btpTab = new GetBalDictionary("job_type_balance", me);
			itpTab = new GetIncDictionary("job_type_incoming", me);
			otpTab = new GetOutDictionary("job_type_outlay", me);
		}
    }
});
